package com.lap.framework.base.tools;

import com.lap.framework.base.entity.ArgEntity;
import com.lap.framework.base.entity.ArgMap;
import lombok.experimental.UtilityClass;
import org.apache.commons.lang3.ArrayUtils;
import org.junit.jupiter.params.aggregator.ArgumentsAccessor;

/**
 * 参数转换工具
 *
 * @author Shuisheng Lao(劳水生)
 * @version 0.0.1
 */
@UtilityClass
public class ArgUtil {

  /**
   * 参数转换到map对象,这里的argMap对象是自定义
   *
   * @param accessor 参数访问
   * @param args 单侧实体数组
   * @return 参数对象
   */
  public static ArgMap arg2Map(ArgumentsAccessor accessor, ArgEntity[] args) {
    if (ArrayUtils.isEmpty(args)) return ArgMap.empty();

    ArgMap argMap = new ArgMap();
    for (int index = 0; index < args.length; index++) {
      argMap.put(args[index].getKey(), accessor.get(index, args[index].getClazz()));
    }
    return argMap;
  }

  /**
   * Integer 参数对象转换到字符串,这里是特殊使用
   *
   * @param arg 入参
   * @return 字符串
   */
  public static String int2String(Integer arg) {
    return arg == null ? null : String.valueOf(arg);
  }
}
